题解:P17093 [ICPC 2017 Qingdao R] Chenchen, Tangtang and ZengZeng

239 字
1 分钟
题解:P17093 [ICPC 2017 Qingdao R] Chenchen, Tangtang and ZengZeng

题面传送门:P17093 [ICPC 2017 Qingdao R] Chenchen, Tangtang and ZengZeng

题目大意#

给定多个三子棋棋盘,判断获胜情况。

思路讲解#

本题可用字符数组存储。由于只有三行三列,我们可以枚举数组中每行每列每对角线是否有三个相同棋子(但要注意不是空白)。若有则有人获胜,输出这三格的值即可。在枚举完还没有输出结果时,输出一个 ongoing 即可。

对于如何判断有无输出,既可以使用标记变量,有输出就打标记;也可使用 continue 语句,若有输出直接不执行下方的输出 ongoing 指令。

代码实现#

完整代码
#include<bits/stdc++.h>
using namespace std;
int t;
char c[4][4];
int main(){
cin>>t;
for(int z=1;z<=t;z++){
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
cin>>c[i][j];
}
}
if(c[1][1]==c[1][2]&&c[1][2]==c[1][3]&&c[1][1]!='.'){
cout<<c[1][1]<<'\n';
continue;
}
if(c[2][1]==c[2][2]&&c[2][2]==c[2][3]&&c[2][1]!='.'){
cout<<c[2][1]<<'\n';
continue;
}
if(c[3][1]==c[3][2]&&c[3][2]==c[3][3]&&c[3][1]!='.'){
cout<<c[3][1]<<'\n';
continue;
}
if(c[1][1]==c[2][1]&&c[2][1]==c[3][1]&&c[1][1]!='.'){
cout<<c[1][1]<<'\n';
continue;
}
if(c[1][2]==c[2][2]&&c[2][2]==c[3][2]&&c[1][2]!='.'){
cout<<c[1][2]<<'\n';
continue;
}
if(c[1][3]==c[2][3]&&c[2][3]==c[3][3]&&c[1][3]!='.'){
cout<<c[1][3]<<'\n';
continue;
}
if(c[1][1]==c[2][2]&&c[2][2]==c[3][3]&&c[1][1]!='.'){
cout<<c[1][1]<<'\n';
continue;
}
if(c[3][1]==c[2][2]&&c[2][2]==c[1][3]&&c[3][1]!='.'){
cout<<c[3][1]<<'\n';
continue;
}
cout<<"ongoing"<<'\n';
}
return 0;
}

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

题解:P17093 [ICPC 2017 Qingdao R] Chenchen, Tangtang and ZengZeng
https://zhedaotixuanbo.pages.dev/posts/题解:P17093 [ICPC 2017 Qingdao R] Chenchen, Tangtang and ZengZeng/
作者
zhedaotixuanbo
发布于
2026-07-12
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
zhedaotixuanbo
这道题选什么? _____!
公告
分类
标签
站点统计
文章
17
分类
1
标签
21
总字数
6,295
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
ZTXB v1.0.0
文章许可
CC BY-NC-SA 4.0